#ifndef _LOGGER_
#define _LOGGER_

#include <stdio.h>
#include "MemoryPool.hpp"

#define Log (*Logger::getInstance())

class Logger{
protected:
    static Logger* instance;
    MemoryPool pool;
    
    Logger();

    virtual void write() = 0;
public:
	unsigned int curPriority;

    static Logger* getInstance();

    Logger& operator<<(const char* str);

    virtual void close();
};

enum LogChannel {
    ANIMATION = 0,
    GRAPHICS = 1,
    CHARACTER = 2
};

#endif